//
//  HMStatusListViewModel.swift
//  新浪微博
//
//  Created by 饶鹏伟 on 16/4/11.
//  Copyright © 2016年 饶鹏伟. All rights reserved.
//

import UIKit

class HMStatusListViewModel: NSObject {
    
    //cell对应的视图模型 HMStatusViewModel
    lazy var statusArray: [HMStatusViewModel]=[HMStatusViewModel]()
    
    //加载首页的数据
    func loadHomagePageData(isPullup: Bool,finished: (isSuccess: Bool) -> ()){
        
        guard let token=HMUserAccountViewModel.sharedAccountViewModel.userAccount?.access_token
        else {
            
            print("用户未登录")
            
            return
        }
        
        
        //上拉加载更多数据 max_id 和下拉刷新since_id 这两个字段互斥的 只能够传一个
        var max_id: Int64=0
        
        var since_id: Int64=0
        
        if isPullup{
            
            //上拉
            max_id=statusArray.last?.status?.id ?? 0
            
        }else{
            
            //下拉
            since_id=statusArray.first?.status?.id ?? 0
        }
        
        
        
        //登录成功发送网络请求
        HMNetworkTools.shardTools.loadHomePageData(token,max_id: max_id,since_id: since_id) { (result, error) -> () in
            
            //print(token)
            
            if error != nil{
                
               // print(error)
                
                finished(isSuccess: false)
                
                return
            }
            
           //请求成功
            
            //将result转化为字典类型
            guard let dict = result as? [String : AnyObject] else{
                
                finished(isSuccess: false)
                return
            }
            
           //.根据 statuses key 获取对应的字典类型的数组
            
            guard let Array=dict["statuses"] as? [[String : AnyObject]] else{
                
                
                finished(isSuccess: false)
            
            
                return
            }
            
            
            //遍历数组 取出每个字典
            
            //申明一个可变的数组
            var tempArray = [HMStatusViewModel]()
            
            for item in Array {
                
                //字典转模型
                let s=HMStatus(dict: item)
                //将模型放在HMStatusViewModel里面 生成一个带有模型的viewmodel
                let viewmodel = HMStatusViewModel(status: s)
                
                //将viewmodel 保存到数组中
                //可以达到 一个cell对应一个viewmodel
                tempArray.append(viewmodel)

            }
            
            //赋值 保存数组
            //self.statusArray=tempArray
            if isPullup {
                //上拉加载更多数据
                self.statusArray = self.statusArray + tempArray
            } else {
                //下拉刷新数据
                self.statusArray = tempArray + self.statusArray
            }
        
            //刷新tableview
            finished(isSuccess: true)
        }
        
    }
}
